Communication systems are known to comprise a plurality of communication units, such as in-car mobiles or in-hand portables and repeaters transmitting and receiving information via a limited number of radio frequency (RF) communication resources (channels). The integrity of data communicated via RF channels is typically affected by noise, which has the effect of inducing errors in the data being communicated. To achieve reliable data transfers, some type of error-control protocol is needed. Quite often, an automatic repeat-request (ARQ) protocol is used in which error detection coding performed on sets of data, known as packets, allows a receiver to detect the occurrence of errors and, in the event of correctable errors or no errors, to send an acknowledgement (ACK) of correct reception back to the transmitter, or, in the event of uncorrectable errors, send back a non-acknowledgement (NACK) indicating the packet contained errors.
The form of ARQ most commonly used with RF data communication systems is "stop-and-wait" ARQ (SW-ARQ) in which the transmitting unit sends a data packet and then waits for an ACK before sending the next packet. Uncorrectable channel errors to the packet result in either a NACK or a "time-out" (i.e. a time interval where no feedback is received), in which case the transmitting unit re-sends the packet. In any ARQ-type protocol, it is desirable from a receiver's point of view for packets to be sent only in sequential order. This method has the advantage of being simple and of ensuring that the correct order of data messages (packets) is maintained. However, the substantial delay in the feedback path of many RF data communication systems results in a very poor channel throughput rate, as the channel is idle during the wait for the ACK.
To overcome this limitation of the SW-ARQ protocol, a "sliding window" protocol can be used. These protocols are distinguished by the existence of a memory buffer in the transmitter, called a window, capable of storing multiple data packets. Thus, the transmitter can continue sending new packets while waiting for the old packets to be ACK'd, thereby preventing the idle channel condition. If a NACK is returned for a packet, or if a time-out occurs, the packet is retrieved from the memory buffer and re-sent. As the oldest pending packets are ACK'd, they are dropped from the memory buffer; in essence, the window "slides" past them, making room for new packets to be transmitted.
The use of the sliding window on the transmit side will result in some packets reaching the receive side out of order, due to retransmissions. To maintain correct ordering of the packets, a sequence number is typically assigned to each packet by the transmitter. The receive side must then ensure that the received packets are passed to the upper protocol layers in the correct sequence. One method of handling this is for the receiver not to accept any packets out of sequence. If an out of sequence packet is received, it is NACK'd, and all subsequently received packets are ignored until the rejected packet is received correctly. The transmitter, upon receiving the NACK, retransmits the rejected packet, as well as the subsequent (N-1) packets that were ignored by the receiver (N being the window size). This scheme, termed "Go-Back-N" ARQ (GBN-ARQ), has the advantage of requiring no memory buffer space on the receive side, but the disadvantage of wasting channel space by retransmitting all (N-1) packets after a NACK'd packet.
This disadvantage may be overcome by creating a memory storage buffer on the receive side, so that the packets that are received after a NACK'd packet may be stored. Upon receiving the NACK, the transmitter then re-sends only the one incorrect packet. When this packet is correctly received, the receiver passes it on to the upper protocol layers, along with all subsequent correctly received packets in storage. In this way, correct sequencing is maintained. Since only incorrectly received packets are retransmitted on the channel, this scheme, termed "Selective Repeat" ARQ (SRARQ), is much more efficient then GBN-ARQ, but requires substantial memory buffer space on the receive side.
In spite of the advantages presented by SR-ARQ, it is seldom used in RF data communication systems. One reason is that, due to the high error rate over the RF channel (as a result of, for example, Rayleigh fading, co-channel interference, and the like), packets are efficient only if small packet sizes are used, since a single uncorrected bit error necessitates the retransmission of the entire packet. With the SR-ARQ protocol, one would therefore need large windows, to accommodate many small pending packets rather than a few large ones, on each side to make the protocol efficient. This, in turn, would require a large range of sequence numbers. The conflicting requirements of small packets and large sequence numbers means a substantial bit overhead in each packet. Also, the resulting large number of required ACKs and NACKs on the return channel would take up significant channel capacity. Large window sizes also increase the complexity of the protocol control on the transmit side, as individual timers are needed for each window location to determine time-out conditions on each packet.
Therefore, a need exists for an ARQ-based protocol, offering the advantages of sliding window and selective-repeat protocols, that allows the reliable and efficient transmission of data over high error-rate communication channels.